import { ElMessage } from 'element-plus'
export default {
  /**
   * 下载Excel文件流
   * @param {string} binaryData
   * @param {string} fileName
   */
  downloadExcel(binaryData, fileName) {
    const a = document.createElement('a')
    a.download = fileName
    a.style.display = 'none'
    a.href = URL.createObjectURL(new Blob([binaryData], { type: 'application/vnd.ms-excel' }))
    document.body.appendChild(a)
    a.click()
    URL.revokeObjectURL(a.href)
    document.body.removeChild(a)
  },
  /**
   * base64 to file
   */
  base64toFile(dataurl, fileName) {
    let arr = dataurl.split(',')
    let mime = arr[0].match(/:(.*?);/)[1]
    let bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n)
    while (n--) u8arr[n] = bstr.charCodeAt(n)
    return new File([u8arr], fileName, { type: mime })
  },
  /**
   * 文件转base64
   * @param {Blob} blob 文件
   */
  fileToBase64: (blob) =>
    new Promise((resolve) => {
      const fileReader = new FileReader()
      fileReader.onload = (e) => resolve(e.target.result)
      fileReader.readAsDataURL(blob)
    }),
  /**
   * 通过文件链接下载文件
   * @param {string} fileUrl 下载的文件链接
   * @param {string} fileName 下载的文件名字
   */
  downloadFile(fileUrl, fileName) {
    let url = fileUrl
    const a = document.createElement('a')
    a.href = url
    a.download = fileName // 下载后文件名
    a.style.display = 'none'
    document.body.appendChild(a)
    a.click() // 点击下载
    document.body.removeChild(a) // 下载完成移除元素
  },
  /**
   * @description: 深拷贝的deepClone
   * @param {Object} 源数据
   * @return {Object}
   */
  deepClone(obj) {
    return JSON.parse(JSON.stringify(obj))
  },
  /**
   * @description: 只能输入数字和字母replace
   * @param {String} str
   * @return {String}
   */
  enOrNum(str) {
    try {
      return str.replace(/[^0-9a-zA-Z]/g, '')
    } catch (err) {
      return str
    }
  },

  /**
   * @description: 只能输入数字
   * @param {*} val
   * @return {Number}
   */
  numReplace(val) {
    try {
      return val.replace(/\D/g, '')
    } catch (err) {
      return val
    }
  },

  /**
   * @description: 数字输入限制小数点后两位
   * @param {*} val
   * @param {Number} max 限制最大输入长度
   * @return {Number}
   */
  numberLimit(val, max) {
    if (val == '') return ''
    val = val.replace(/[^\d.]/g, '')
    if (val.indexOf('.') > -1) {
      if (val[0] == '.') {
        return ''
      }
      let firstNum = val.split('.')[0].toString()
      let lastNum = val.split('.')[1].toString()
      if (firstNum.length > max) {
        firstNum = firstNum.substring(0, max)
      }
      if (lastNum.length > 2) {
        lastNum = lastNum.substring(0, 2)
      }
      return firstNum + '.' + lastNum
    } else {
      if (val == 0) {
        val = 0
      } else if (val.substring(0, 1) == 0) {
        val = val.substring(1, val.length)
      }
    }
    val = val.toString()
    if (val.length > max) {
      val = val.substring(0, max)
      return this.numReplace(val)
    } else {
      return this.numReplace(val)
    }
  },
  /**
   * @description: 金额格式化
   * @param {*} val
   * @return {Number}
   */
  moneyFormat(val) {
    // 保留2位小数 并每隔3位用逗号分开 1,234.56
    var str = Number(val).toFixed(2) + ''
    var intSum = str.substring(0, str.indexOf('.')).replace(/\B(?=(?:\d{3})+$)/g, ',') //取到整数部分
    var dot = str.substring(str.length, str.indexOf('.')) //取到小数部分搜索
    var ret = intSum + dot
    return val ? ret : '0'
  },
  /**
   * @description: 电话号 中间4为隐藏
   * @param {*} val 
   * @param {Boolean} true false 是否转换
   * @return {Number}
   */
  geTel(tel, type) {
    var reg = /^(\d{3})\d{4}(\d{4})$/
    if (type) {
      return tel.replace(reg, '$1 **** $2')
    } else {
      return tel
    }
  },
  /**
   * @description: 自定义命令 拦截 
   * @param {*} val : 缓存中的权限值
   * @return {Boolean}
   */
  permissionIntercept(val){ 
    let permissionBtns = localStorage.getItem('btnPermission').split(',') 
    if(permissionBtns.indexOf(val.toString()) == -1){
      ElMessage({ message: '暂无权限查看详情，请联系管理员', type: 'error' })
    }else{
      return true
    }
    return false
  },
  btnAuthority(val){
    let permissionBtns = localStorage.getItem('btnPermission').split(',')
    if(permissionBtns.indexOf(val.toString()) == -1){
      return false
    }else{
      return true
    }
  }
}
